package day26.homework;

public class Return3 { 
    public static void main(String[] args) { 
        // 调用testReturn3方法并打印返回值
        System.out.println(testReturn3()); 
    } 
    
    private static String testReturn3() { 
        String a = "hello"; // 初始化字符串a为"hello"
        try { 
            a += "!"; // 在字符串a后追加"!"，此时a的值为"hello!"
            System.out.println("try:" + a); // 打印try块中的a值，输出"try:hello!"
            return a; // 返回a的当前值"hello!"，但此时还未真正返回，会先执行finally块
        } finally { 
            a += "world"; // 在finally块中继续修改a，在其后追加"world"，此时a的值为"hello!world"
            System.out.println("finally:" + a); // 打印finally块中的a值，输出"finally:hello!world"
            // finally块执行完毕后，才会真正返回之前在try块中确定的返回值"hello!"
        } 
    } 
}
/*
程序执行流程和输出结果解释：
1. 程序从main方法开始执行，调用testReturn3()方法
2. 在testReturn3()方法中，字符串a初始化为"hello"
3. 进入try块，a变为"hello!"，并打印"try:hello!"
4. 遇到return语句，但并未立即返回，而是先执行finally块
5. 在finally块中，a变为"hello!world"，并打印"finally:hello!world"
6. finally块执行完毕后，返回在try块中确定的值"hello!"
7. main方法打印返回值"hello!"
*/